package com.moli.iov.base.model.dto.req;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.moli.iov.base.model.UserDto;
import com.moli.iov.base.model.dto.VehicleCommand;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @author whl
 */
@Data
public class CompanyVehicleModelReqDto extends UserDto {
  /**
   * id
   */
  @TableId(type = IdType.AUTO)
  @NotNull(message = "企业id不能为空", groups = {Update.class,Read.class})
  private Long id;

  /**
   * 所属公司id
   */
  @NotNull(message = "公司id不能为空", groups = {Save.class, Update.class})
  private Long companyId;

  /**
   * 所属公司名称
   */
  @NotBlank(message = "公司名称不能为空", groups = {Save.class, Update.class})
  private String companyName;

  /**
   * 品牌
   */
  @NotBlank(message = "品牌不能为空", groups = {Save.class, Update.class})
  private String brand;

  /**
   * 车系
   */
  @NotBlank(message = "车系不能为空", groups = {Save.class, Update.class})
  private String vehicleSeries;

  /**
   * 车型
   */
  @NotBlank(message = "车型不能为空", groups = {Save.class, Update.class})
  private String vehicleType;

  /**
   * 用于前端展示
   */
  @NotBlank(message = "车型名称不能为空", groups = {Save.class, Update.class})
  private String vehicleModel;


  private String vehicleCommand;

  /**
   * 车机型号 唯一值(例H-800)
   */
  @NotBlank(message = "车机型号不能为空", groups = {Save.class, Update.class})
  private String deviceModel;

  /**
   * 生产厂商
   */
  @NotBlank(message = "生产厂商不能为空", groups = {Save.class, Update.class})
  private String supplierCode;

  /**
   * 生产厂商(用于前端显示)
   */
  @NotBlank(message = "生产厂商不能为空", groups = {Save.class, Update.class})
  private String supplierName;

  /**
   * 设备型号（例：TBOX/GPS）
   */
  @NotBlank(message = "设备型号不能为空", groups = {Save.class, Update.class})
  private String equipmentType;
  public interface Save{};

  /**
   * 车型指令控制json
   */
  @NotEmpty(message = "车型指令不能为空", groups = {Save.class,Update.class})
  private List<VehicleCommand> vehicleCommandList;

  public interface Update{};
  /**
   * 只读
   */
  public interface  Read{};

  /**
   * 创建时间
   */
  private Date gmtCreate;

  /**
   * 创建人
   */
  private String createUser;

  /**
   * 更新时间
   */
  private Date gmtModified;

  /**
   * 修改人
   */
  private String modifiedUser;

  /**
   * 删除标识 （0未删除 1 已删除）
   */
  private Integer isDelete;
}
